package world.snowcrystal.dto;

import lombok.Data;
import world.snowcrystal.Enum.AuthorityEnum;

@Data
public class ChatroomUser {

    /**
     * 用户的标识，用于唯一标识聊天室中的一个用户。当 code 不为 0 时，表示这是一个非匿名用户；
     * 此时这个字段就是存储在数据库表中的 uid。否则，这是一个
     * 临时的随机值
     * @see AuthorityEnum
     */
    private String id;

    /**
     * 聊天室中的用户名，当 code 不为 0 时，表示这是一个非匿名用户；
     * 此时这个字段就是存储在数据库表中的 username。否则，这是一个
     * 根据 {@link #id} 生成的聊天室用户名
     * @see AuthorityEnum
     */
    private String username;

    /**
     * 用户的权限信息，用于表示不同类型的用户
     * @see AuthorityEnum
     */
    private Integer code;


    /**
     * 设备指纹
     * @since 1.0
     */
    private String fingerprint;

    public ChatroomUser(String fingerprint,String id, String username,
                        AuthorityEnum code) {
        this.id = id;
        this.fingerprint = fingerprint;
        this.username = username;
        this.code = code.getCode();
    }


    static public ChatroomUser createAuthedUser(String fp,long id, String username) {
        return new ChatroomUser(fp,String.valueOf(id),username,AuthorityEnum.ROLE_USER);
    }
    static public ChatroomUser createAnonymousUser(String fp,String id, String username) {

        return new ChatroomUser(fp,id,username,AuthorityEnum.ROLE_ANONYMOUS);
    }


}
